package czk.jvm.lecture.creteobj;

import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;

/**
 *
 * 方法句柄创建对象
 *
 * 
 * @Author:ChenZhangKun
 * @Date: 2023/7/27 11:45
 */
public class MethodHandler {
    public static void main(String[] args) {

        // 拿到无参构造方法
        MethodType methodType = MethodType.methodType(void.class);

        // 拿到方法句柄

        MethodHandles.Lookup lookup = MethodHandles.lookup();
        // 拿到user的构造方法
        try {
            MethodHandle constructor = lookup.findConstructor(User.class, methodType);

            User user = (User) constructor.invoke();

            user.print();
        } catch (Throwable e) {

            e.printStackTrace();
        }


    }
}
